As businesses and consumers continue to flock to the Internet for commercial interaction, design of web-based computer systems, such as “web farms”, must satisfy more numerable and restrictive constraints while satisfying increasingly difficult objectives. For example, a proposed web farm may be specified to run an e-commerce site serving 10,000 concurrent users, requiring that the utilization of each server is less that 60% and that the response times users experience be less than 5 seconds. In addition, the design must minimize the number of total servers in the web farm. This information represents a “problem” that a designer must solve (i.e., by designing a computer system configuration to satisfy the problem requirements).
In existing approaches, the design of the resulting web farm is achieved through manual trial-and-error calculations or speculative performance simulations. For example, a designer may change workload and topology parameters of a computer system configuration to vary the number of servers and users, CPU speed, the amount of memory in each server, the secondary storage configuration, etc. and then simulate the configuration with a performance simulator. Such simulations can take a long time to complete (e.g., ranging from a few minutes to many hours per iteration). However, the selection of the configuration variables for each iteration is left to the designer and is often based on the designer's interpretations of one or more previous iterations. Particularly, designers have previously used rules of thumb and speculations based on previous experience to make provisioning decisions. Accordingly, arriving at an optimal solution is risky, time-consuming, manually intensive, and difficult to achieve using most existing approaches.
In other approaches, optimization tools have been offered for use with some specific performance simulation systems to reduce the manual emphasis of the optimization process. Such a tool can support one or more predefined optimization algorithms. However, in some such approaches, each optimization tool has been absolutely dependent on and often integrated into a given simulator, preventing use of the same optimizer and problem specification with multiple and disparate simulators.
Moreover, the various web farm configurations that are simulated may share iterations having common configurations and results. Clearly, it is undesirable to re-simulate such shared iterations for each web farm being designed, but existing approaches do not provide means for reusing previously simulated iterations.